import SwiftUI
import SharedUIComponents
import XcodeInspector

struct WarningPanel: View {
    let message: String
    let url: String?
    let firstLineIndent: Double
    let onDismiss: () -> Void
    
    @Environment(\.colorScheme) var colorScheme
    @Environment(CursorPositionTracker.self) var cursorPositionTracker
    @AppStorage(\.clsWarningDismissedUntilRelaunch) var isDismissedUntilRelaunch
    
    var foregroundColor: Color {
        return colorScheme == .light ? .black.opacity(0.85) : .white.opacity(0.85)
    }
    
    var body: some View {
        if !isDismissedUntilRelaunch {
            HStack(spacing: 12) {
                HStack(spacing: 8) {
                    Image("CopilotLogo")
                        .resizable()
                        .renderingMode(.template)
                        .scaledToFit()
                        .foregroundColor(.primary)
                        .frame(width: 14, height: 14)
                    
                    Text("Monthly completion limit reached.")
                        .font(.system(size: 12))
                        .foregroundColor(.primary)
                        .lineLimit(1)
                }
                .padding(.horizontal, 9)
                .background(
                    Capsule()
                        .fill(foregroundColor.opacity(0.1))
                        .frame(height: 17)
                )
                .fixedSize()
                
                HStack(spacing: 8) {
                    if let url = url {
                        Button("Upgrade Now") {
                            NSWorkspace.shared.open(URL(string: url)!)
                        }
                        .buttonStyle(.plain)
                        .padding(.horizontal, 8)
                        .padding(.vertical, 2)
                        .background(Color(nsColor: .controlAccentColor))
                        .foregroundColor(Color(nsColor: .white))
                        .cornerRadius(6)
                        .font(.system(size: 12))
                        .fixedSize()
                    }
                    
                    Button("Dismiss") {
                        isDismissedUntilRelaunch = true
                        onDismiss()
                    }
                    .buttonStyle(.bordered)
                    .font(.system(size: 12))
                    .keyboardShortcut(.escape, modifiers: [])
                    .fixedSize()
                }
            }
            .padding(.top, 24)
            .padding(
                .leading,
                firstLineIndent + 20 + CGFloat(
                    cursorPositionTracker.cursorPosition.character
                )
            )
            .background(.clear)
        }
    }
}
